﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Gestión_UTN.util;

namespace Gestión_UTN.View.alta
{
    public partial class AltaProvincia : Form
    {
        private static Gestión_UTN.bl.provinciabl createProvincia = Gestión_UTN.factories.blfactory.createProvincia();
        private static Gestión_UTN.bl.paisbl createPais = Gestión_UTN.factories.blfactory.createPais();

        public AltaProvincia()
        {
            InitializeComponent();
        }

        private void AltaProvincia_Load(object sender, EventArgs e)
        {
            DataTable paises = createPais.FindAllPaises();

            if (null != paises)
            {
                foreach (DataRow dr in paises.Rows)
                {
                    this.cmbPais.Items.Add(dr[1].ToString());
                }
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Validar())
                {
                    bo.provinciabo pro = createProvincia.FindProvinciaByNombre(this.txtNombre.Text);

                    if (null == pro)
                    {
                        pro = new bo.provinciabo(0, this.txtNombre.Text, this.cmbPais.Text);

                        bool ingresada = createProvincia.SaveProvincia(pro);

                        if (ingresada)
                        {
                            MessageBox.Show("Provincia Ingresada!!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            this.Close();

                            this.Dispose();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Provincia Existente!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void btnPais_Click(object sender, EventArgs e)
        {
            general.Paises pais = new general.Paises();

            pais.FormClosed += new FormClosedEventHandler(pais_FormClosed);

            pais.Show();
        }

        void pais_FormClosed(object sender, FormClosedEventArgs e)
        {
            DataTable paises = createPais.FindAllPaises();

            if (null != paises)
            {
                foreach (DataRow dr in paises.Rows)
                {
                    this.cmbPais.Items.Add(dr[1].ToString());
                }
            }
        }

        private bool Validar()
        {
            bool checkNombre = false;
            bool checkPais = false;

            if (!Validador.es_nombre(txtNombre))
            {
                errProv.SetError(txtNombre, "Sólo Letras");
            }
            else
            {
                errProv.SetError(txtNombre, String.Empty);
                checkNombre = true;
            }

            if (!Validador.es_nombre(cmbPais))
            {
                errProv.SetError(cmbPais, "Sólo Letras");
            }
            else
            {
                errProv.SetError(cmbPais, String.Empty);
                checkPais = true;
            }

            return (checkNombre && checkPais);
        }
    }
}
